package com.delio.client.produccion.articulos;

import com.delio.client.idioma.DelioConstants;
import com.delio.client.produccion.tipos.Tipo;
import com.delio.client.produccion.tipos.Tipos;
import com.delio.client.produccion.unidades.Unidad;
import com.delio.client.produccion.unidades.Unidades;
import com.extjs.gxt.ui.client.binding.FormBinding;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.KeyListener;
import com.extjs.gxt.ui.client.event.MenuEvent;
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.util.IconHelper;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.Label;
import com.extjs.gxt.ui.client.widget.Status;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.HiddenField;
import com.extjs.gxt.ui.client.widget.form.TextArea;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
import com.extjs.gxt.ui.client.widget.menu.Menu;
import com.extjs.gxt.ui.client.widget.menu.MenuItem;
import com.extjs.gxt.ui.client.widget.toolbar.PagingToolBar;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.KeyCodes;

public class NewArticuloForm extends Dialog{
	
	private DelioConstants x = GWT.create(DelioConstants.class);
	Button btnguardarART,btnsalirART;
	TextField<String>  codArt,udesc,tipArt;
	TextArea taDescripcionArt;
	FormBinding fbart;
	FormPanel fp;
	HiddenField<String> id,idu,idta;
	ComboBox<ModelData> tart,und;
	Integer idtart,idund;
    PagingToolBar toolBarPagART;
    Menu contMenuUnid,contMenutipArt; 
    MenuItem miUnid,miTart;
    public Status status;
    
    public NewArticuloForm(){
     Tipos.listartipos();
     Unidades.listarestadoUnidades();
     Tipos.listartiposCombo();
     Unidades.listarestadoUnidadesCombo();  
     
	 setBodyBorder(false);  
	 setHeading("Nuevo Articulo");  
	 setWidth(350);  
	 setHeight(240);
	 setIconStyle("images/icons/new.gif");
	 setModal(true);
	 AddButtons();
	 setButtons("");
	 addButton(btnsalirART);
	 addButton(btnguardarART);
     setFrame(true);
     FormART();
	 add(fp);
	 show();
	 
     contMenuUnid = new Menu();  
     
     miUnid = new MenuItem();  
     miUnid.setText("Nueva Unidad");  
     miUnid.setIconStyle("images/icons/add.png");  
     miUnid.addSelectionListener(new SelectionListener<MenuEvent>() {  
     public void componentSelected(MenuEvent ce) {
       DialogUnd().show();
       }  
     });  
     contMenuUnid.add(miUnid);  
     und.setContextMenu(contMenuUnid); 

     contMenutipArt = new Menu();  
     
     miTart = new MenuItem();  
     miTart.setText("Nuevo Tipo de Articulo");  
     miTart.setIconStyle("images/icons/add.png");  
     miTart.addSelectionListener(new SelectionListener<MenuEvent>() {  
     public void componentSelected(MenuEvent ce) {
       DialogTipArt().show();
       }  
     });  
     contMenutipArt.add(miTart);  
     tart.setContextMenu(contMenutipArt); 

    }
    
    public void AddButtons(){
   	  btnsalirART   = new Button("Salir",IconHelper.create("images/icons/exit.png"));
	  btnguardarART = new Button("Guardar",IconHelper.create("images/icons/save_all.png"));
   	
        btnguardarART.addSelectionListener(new SelectionListener<ButtonEvent>(){
         	public void componentSelected(ButtonEvent ce){
         	 if(validForm()){
         	   Articulo art = new Articulo();
         	    art.setCodarticulo(codArt.getValue());
         	    art.setTipo_id(idtart);
         	    art.setUnidad_id(idund);
         	    art.setDescripcion(taDescripcionArt.getValue());
         	    art.setStockfisico(0.0);
        	   
              if(id.getValue()==null){
                Articulos.guardar(art);
              }
              if(id.getValue()!=null){
                art.setId(Integer.parseInt(id.getValue().toString()));
   		      Articulos.actualizar(art);
   		    }
             hide();
             Articulos.loader.load();
         	  }
   	   	}
        });
        
        btnsalirART.addSelectionListener(new SelectionListener<ButtonEvent>(){
   	     public void componentSelected(ButtonEvent ce){
   	     	hide();
         }
   	   });

    }
    
    
    public Dialog DialogUnd(){
    	
		Dialog dl = new Dialog();  
		dl.setHeading("Nueva Unidad");  
		dl.setWidth(200);  
		dl.setHeight(100);
		dl.setIconStyle("images/icons/new.gif");
		dl.setModal(true);
		dl.setBodyStyle("fontWeight:bold;padding:13px;");
		dl.setButtons("");
		dl.setBottomComponent(new Label("Enter para Guardar"));
	    dl.setFrame(true);
	    
	    status = new Status();
	  	status.setBusy("Guardando...");
	    status.hide();
	 	status.setAutoWidth(true);
	    	    
    	idu = new HiddenField<String>();
    	idu.setVisible(false);
    	udesc = new TextField<String>();
        udesc.setAllowBlank(false);
        udesc.focus();
        udesc.addKeyListener(new KeyListener(){
     	  public void componentKeyDown(ComponentEvent event){
     		 if(event.getKeyCode() == KeyCodes.KEY_ENTER){	
     		   if(udesc.isValid()){ 
     			  Unidades.unid_naf = NewArticuloForm.this;
     			  Unidad u = new Unidad();
     			  status.show(); 
     			  u.setDescripcion(udesc.getValue());
    			  Unidades.guardar(u);
    			  udesc.setValue("");
                  udesc.focus();
     			  Unidades.loaderCombo.load();
       		   }else{
       	    	  udesc.focus();      			   
       		   }
       		 }
     	   }
     	 });
        dl.add(idu);
        dl.add(udesc);
        dl.add(status);
        
        return dl;
    }
    
    public Dialog DialogTipArt(){
    	
		Dialog dl = new Dialog();  
		dl.setHeading("Nuevo Tipo de Articulo");  
		dl.setWidth(200);  
		dl.setHeight(100);
		dl.setIconStyle("images/icons/new.gif");
		dl.setModal(true);
		dl.setBodyStyle("fontWeight:bold;padding:13px;");
		dl.setButtons("");
		dl.setBottomComponent(new Label("Enter para Guardar"));
	    dl.setFrame(true);
	    
	    status();
	   	idta = new HiddenField<String>();
    	idta.setVisible(false);
    	tipArt = new TextField<String>();
        tipArt.setAllowBlank(false);
        tipArt.focus();
        tipArt.addKeyListener(new KeyListener(){
     	  public void componentKeyDown(ComponentEvent event){
     		 if(event.getKeyCode() == KeyCodes.KEY_ENTER){	
     		   if(tipArt.isValid()){ 
     			  Tipos.tipart_naf = NewArticuloForm.this;
     			  Tipo t = new Tipo();
     			  status.show(); 
     			  t.setDescripcion(tipArt.getValue());
    			  Tipos.guardar(t);
    			  tipArt.setValue("");
                  tipArt.focus();
     			  Tipos.loaderCombo.load();
       		   }else{
       	    	  tipArt.focus();      			   
       		   }
       		 }
     	   }
     	 });
        dl.add(idta);
        dl.add(tipArt);
        dl.add(status);
                
        return dl;
    }
    
    
   public void status(){
	 status = new Status();
	 status.setBusy("Guardando...");
	 status.hide();
	 status.setAutoWidth(true);
   }

	
	public void FormART(){
		fp = new FormPanel();
		fp.setHeaderVisible(false);
		fp.setFrame(true);
		id = new HiddenField<String>();
		id.setVisible(false);
		codArt = new TextField<String>();
		codArt.setFieldLabel(x.codigo());
		codArt.setEnabled(false);
		codArt.setAllowBlank(true);
		tart = new ComboBox<ModelData>();  
		tart.setEmptyText("Select a state...");  
		tart.setAllowBlank(false);
		tart.setDisplayField("descripcion");  
		tart.setFieldLabel(x.tipoarticulo());
		tart.setWidth(150);  
		tart.setStore(Tipos.storeCombo);
		tart.setValueField("descripcion");
		tart.setTypeAhead(true);  
		tart.setTriggerAction(TriggerAction.ALL); 
		tart.addSelectionChangedListener(new SelectionChangedListener<ModelData>(){
		  public void selectionChanged(SelectionChangedEvent<ModelData> se) {
			 if(tart.getValue()!=null){   
				   idtart = Integer.parseInt(tart.getValue().get("id").toString());
			 }
		   }
		});
		taDescripcionArt = new TextArea();
		taDescripcionArt.setFieldLabel("Descripcion");
		taDescripcionArt.setAllowBlank(true);
		und = new ComboBox<ModelData>();  
		und.setEmptyText("Select a state...");  
		und.setAllowBlank(false);
		und.setDisplayField("descripcion");  
		und.setFieldLabel(x.unidad());
		und.setWidth(150);  
	    und.setStore(Unidades.storeCombo);
		und.setValueField("descripcion");
		und.setTypeAhead(true);  
		und.setTriggerAction(TriggerAction.ALL); 
		und.addSelectionChangedListener(new SelectionChangedListener<ModelData>(){
		  public void selectionChanged(SelectionChangedEvent<ModelData> se) {
			if(und.getValue()!=null){   
			   idund = Integer.parseInt(und.getValue().get("id").toString());
			 }
		   }
		});	
		fp.add(id);	
		fp.add(codArt);
		fp.add(tart);
		fp.add(und);
		fp.add(taDescripcionArt);
	}
	public boolean validForm(){
	  return fp.isValid();
	}

	public void clearForm(){
  	 fp.clear();
    }
	
  /*  public void status(){
      status = new Status();
  	  status.setBusy("Guardando...");
  	  status.hide();
  	  status.setAutoWidth(true);
  	  fu.getButtonBar().add(status);
  	  fu.getButtonBar().add(new FillToolItem());
      }*/
}
